// 并查集 (用互不相交的几个树 表示的几个集合 1.查元素所在集合/树  2.合并集合/树)
// 采用 双亲表示法 顺序存储结构

# define SIZE 13

int UFSets[SIZE];  // 集合元素数据

// Init
void Inital(int S[])
{
    for(int i=0; i<SIZE; i++)
    {
        S[i]=-1;
    }
}

// Find() 查操作 找x所属集合（返回x所属根节点）

int Find(int S[], int x)
{
    while(S[x] != -1)  // 循环寻找根节点
    {
        x = S[x];
    }

    return x;
}

// Union 并操作，将两个集合合并为一个

void Union(int S[], int Root1, int Root2)
{
    if (Root1 == Root2)  // 要求Root1 Root2 是不同集合
    {
        return;
    }

    S[Root2] = Root1;
}






